package com.kimari.demo;

/**
 * 算法练习六
 * 打印出所有的“水仙花数”，
 * 所谓“水仙花数”是指一个三位数，
 * 其各位数字立方和等于该数本身。
 * 例如：153是一个“水仙花数”，
 * 因为153=1的三次方＋5的三次方＋3的三次方。
 *
 * @author Reimu
 */
public class Flower {
    public static int[] nums;

    static {
        nums = new int[]{0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
    }

    /**
     * 同样也是
     * 高中数学
     * 排列组合的思想
     */
    public static void getFlower() {
        //第一个 for 循环变量 i 用作百位数
        //注意第一个数不能为 0
        for (int i = 1; i < nums.length; i++) {
            //第二个 for 循环变量 j 用作十位数
            for (int j = 0; j < nums.length; j++) {
                //第三个 for 循环变量 k 用作个位数
                for (int k = 0; k < nums.length; k++) {
                    if ((Math.pow(i, 3) + Math.pow(j, 3) + Math.pow(k, 3)) == (100 * i + 10 * j + k)) {
                        System.out.println("水仙花数：" + (100 * i + 10 * j + k));
                    }
                }
            }
        }
    }


}
